IAxis.DigitalCamSwitch 方法

使用轴位置来控制触发数位输出的开关。当轴达到特定的位置,开关即开启或关闭,开关可透过轴向前或向后移动的方向来控制。

命名空间IntervalZero.KINGSTAR.Base.Class

组合: IntervalZero.KINGSTAR.Base.Class (于 IntervalZero.KINGSTAR.Base.dll) 版本:4.4.0.0

语法

C#VB
void DigitalCamSwitch(
       IList<McCamSwitch> switches,
       IList<McOutput> outputs,
       IList<McTrack> tracks,
       uint enableMask,
       McSource valueSource
)
Sub DigitalCamSwitch(
       switches As IList(Of McCamSwitch),
       outputs As IList(Of McOutput),
       tracks As IList(Of McTrack),
       enableMask As UInteger,
       valueSource As McSource
)

参数

switches

型别:IList<McCamSwitch>

控制开关动作。轨道编号需要按顺序排列。

 

outputs

型别:IList<McOutput>

选择对应轨道所控制的数位输出。

 

tracks

型别:IList<McTrack>

在轨道的开关上增加补偿时间和迟滞。TrackNumber 定义在 Switches 中。

 

enableMask

型别:uint

启用不同轨道。此参数为 bool(32 位元),当 bool 值设为 1 时将启用轨道阵列中相应的轨道。

 

valueSource

型别:McSource

定义轴值的来源,例如位置:

备注

McCamSwitch 类别中的元素

B/E参数型别说明
BTrackNumberINT轨道索引,索引以零为起始。
BFirstOnPosition [使用者单位]LREAL开关开启的位置。
BLastOnPosition [使用者单位]LREAL开关关闭的位置。
EAxisDirectionINT

轴方向,预设值为零。若选择一或二,开关仅在当轴朝指定方向移动时才会启动。

双向:0;正向:1;负向:2。

ECamSwitchModeINT

凸轮开关由轴的位置或时间控制,预设值为零。若选择位置,需进一步设定 FirstOnPositionLastOnPosition;若选择时间,需进一步设定 FirstOnPositionDuration

位置:0;时间:1。

EDurationTIME开关开启的时长,此功能在 CamSwitchMode 选择为时间时可用,单位:秒。

 

McTrack 类别中的元素

B/E参数型别说明
EOnCompensationTIME在每个轨道的切换点前或后开启开关(上升边缘)的补偿时间。若值为正,则开启将延迟;若值为负,则将提前开启。
EOffCompensationTIME在每个轨道的切换点前或后关闭开关(下降边缘)的补偿时间。若值为正,则关闭将延迟;若值为负,则将提前关闭。
EHysteresis [单位]LREAL在轴离开该区域之前,从开关未打开或未关闭的切换点(正向和负向)的距离。此可避免在开关点附近频繁切换。

 

此凸轮定义具有起点与终点,如此使用者可定义每一个凸轮的 FirstOnPositionLastOnPosition(或时间),此函式类似机械凸轮,但具有额外的优点,您可为输出设置一个特定时间,并设定时间补偿和迟滞。

CamSwitchMode:可为位置或时间。

Duration:时长,凸轮开启的输出时长,时间补偿 (OnCompensationOffCompensation) 可为正或负值,负值表示输出在开关位置到达前即变更。

Hysteresis:此参数可避免轴在切换点附近及实际位置在切换位置附近抖动时,输出不断切换的现象。HysteresisMcTrack 的一部分,表示每个轨道都可设定不同的迟滞。

 

McCamSwitch 之范例

参数型别开关 01开关 02开关 03开关 04...开关 N
TrackNumberINTEGER1112  
FirstOnPosition [单位]LREAL2000250040003000  
LastOnPosition [单位]LREAL300030006000--  
AxisDirectionINTEGER1=正向2=负向0=双向0=双向  
CamSwitchModeINTEGER0=位置0=位置0=位置1=时间  
DurationLREAL------1.35 秒  

 

McOutput 之范例

参数MC_OUTPUT[0]MC_OUTPUT[1]MC_OUTPUT[2]---MC_OUTPUT[31]
IsAxisFALSEFALSEFALSE---FALSE
Index000---0
BitOffset012---31

 

I/O 模组之范例

 

下图使用了上例 McCamSwitch 的值,不使用 On/OffCompensationHysteresis,此为当轴持续朝正向移动时的输出行为。

 

SetAxisCamSwitch – 正向

 

正向:输出行为

TrackNumber 1(开关 01, 02, 03)匹配到 McOutput[1];TrackNumber 2(开关 04)匹配到 McOutput[2]。当开关 01开关 02开关 03 被触发时,第一个 I/O 模组(索引 0)上的第二个输出(输出 1)即被开启。当开关 04 被触发时,第三个输出(输出 2)即被开启。

 

On/Off 补偿之范例

以下范例使用 OnCompensation -125ms 与 OffCompensation +250ms。

 

下图为当轴持续朝负向移动,且不使用 On/OffCompensation 与 Hysteresis 时的输出行为。

 

SetAxisCamSwitch – 负向

 

负向:输出行为

 

EnableMask

EnableMask 是一个含有 32 位元的 uint32 参数,每个位元都是一个 bool 值,可控制输出。输出可透过将相应的位元设为 TRUE 或 FALSE 来启用或停用,例如位元 0 控制 McOutput[0];位元 1 控制 McOutput[1],若位元 0 和位元 1 都设为 TRUE,其输出即被启用,意即当相对应的开关被触发时,其输出即被开启。若位元 0 和位元 1 都设为 FALSE,其输出即被停用,即使相对应的开关被触发时,其输出也不会被开启。

位元位元 0位元 1位元 2位元 3----位元 31
TRUE/FALSETRUE/FALSETRUE/FALSETRUE/FALSE----TRUE/FALSE

 

McOutput 之范例

参数MC_OUTPUT[0]MC_OUTPUT[1]MC_OUTPUT[2]---MC_OUTPUT[31]
IsAxisFALSEFALSEFALSE---FALSE
Index000---0
BitOffset012---31

 

EnableMask 位元之范例 1

位元 0、1、2 为 TRUE,意即输出 0、1、2 被启用,当相对应的开关被触发时,输出即被开启。

位元位元 0位元 1位元 2位元 3----位元 31
TRUETRUETRUEFALSEFALSEFALSEFALSEFALSEFALSE

 

正向:输出行为

 

EnableMask 位元之范例 2

位元 0、2 为 TRUE,意即输出 0、2 被启用,当相对应的开关被触发时,仅有这 2 个输出会被开启。

位元位元 0位元 1位元 2位元 3----位元 31
TRUEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSE

 

正向:输出行为

 

EnableMask 位元之范例 3

所有位元均为 FALSE,意即所有输出均停用,即使相对应的开关被触发时,输出也不会被开启。

位元位元 0位元 1位元 2位元 3----位元 31

FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE

 

正向:输出行为

参见

IAxis 介面

IntervalZero.KINGSTAR.Base.Class 命名空间